/**
 * @Author：徐志荣
 * @Date：2023/9/10 下午 2:59
 */
public class Day0910 {
    public static void main(String[] args) {
        int[] nums = {5,7,7,8,8,10};
        System.out.print("34. 在排序数组中查找元素的第一个和最后一个位置: ");
        int[] numbers = searchRange(nums, 8);
        for (int i : numbers) {
            System.out.print(i + " ");
        }
        System.out.println();


        System.out.println("69. x 的平方根: "+mySqrt(4));


    }
    public static int[] searchRange(int[] nums, int target) {
        int[] ret = new int[2];
        ret[0] = ret[1] = -1;
        //处理边界情况
        if(nums.length == 0){
            return ret;
        }
        //1. 二分左端点
        int left = 0,right = nums.length-1;
        while(left<right){
            int mid = left+(right-left)/2;
            if(nums[mid]<target){
                left = mid+1;
            }else{
                right = mid;
            }
        }
        if(nums[left] != target){
            return ret;
        }else{
            ret[0] = right;
        }


        //2. 二分右端点
        left = 0;
        right = nums.length-1;
        while(left<right){
            int mid = left+(right-left+1)/2;
            if(nums[mid] <= target){
                left = mid;
            }else{
                right = mid-1;
            }

        }
        ret[1] = left;
        return ret;

    }
    public static int mySqrt(int x) {
        //细节
        if(x<1){
            return 0;
        }
        long left = 1,right = x;
        while(left<right){
            long mid  = left+(right-left+1) / 2;
            if(mid * mid<=x){
                left = mid;
            }else{
                right=mid-1;
            }
        }
        return (int)left;
    }


}
